#pragma once

#include <base.h>

/* 非WMO */
/*  内存屏障的汇编实现 */
#define NOP()		asm volatile("nop")
#define CPU_RELAX()	cpu_relax()
/* 根据手册, yield有可能会修改总线仲裁优先级 */
#define PAUSE()		asm volatile("yield" : : : "memory")

#define SEVL()		asm volatile("sevl")
#define WFE()		do{			\
			asm volatile("wfe");	\
			} while (0)

static inline void cpu_relax()
{
	SEVL();
	WFE();
}

